package DataStr.homework02;

public class h1 {
    //要测试，那就先创建一个顺序表
    int[]data; //顺序数组
    int size;//表中元素个数
    int c;//表容量
    public h1(int i)  {//构造函数，初始化
        if (i<=0){
            throw new IllegalArgumentException("容量不能小于0");
        }
        this.c=i;
        this.data=new int[c];
        this.size=0;
    }
    public void expend(){
        //空间不足时，容量翻倍
        int newc=this.c*2;
        //创建新数组
        int[]newdata=new int[newc];
        //将原来数组的元素遍历输入新数组
        for(int i=0;i<size;i++){
            newdata[i]=data[i];
        }
        //更新data和容量
        this.data=newdata;
        this.c=newc;
        System.out.println("扩容成功，新容量："+newc);
    }
    //插入数据
    public void insert(int a){
        if(size==c){
            expend();
        }
        //在数组元素末尾加上新插入的数据
        data[size]=a;
        size++;//更新数组大小
    }
    public void print(){
        for(int i=0;i<size;i++){
            System.out.println("顺序表中的元素："+data[i]);
        }
    }
    public int getSize(){
        return this.size;
    }
    public int getC(){
        return this.c;
    }
    public static void main(String[]args){
        //先给顺序表一个固定容量
        h1 h=new h1(5);
        //插入超过容量的数字
        for(int i=0;i<6;i++){
            h.insert(i);
        }
        h.print();//打印顺序表的最终形态
        System.out.println("顺序表的最终数据大小"+h.getSize());
        System.out.println("顺序表的最终容量："+h.getC());
    }

}
